Field of the Invention
The present invention generally relates to a virtualized computer architecture, and, more specifically, to a paravirtualized virtual GPU.
Description of the Related Art
Computer virtualization is a technique that involves encapsulating a physical computing machine platform into a virtual machine that is executed under the control of virtualization software on a hardware computing platform, or “host.” A virtual machine has both virtual system hardware and guest operating system software. In typical virtualized systems, any physical hardware resources included in the system are exposed to the virtual machine via emulation modules. Emulation modules allow for device functionality that was designed for single use to extend to a model which allows for multiple use. The For example, for a virtual machine to interact with a hardware input device, such as mouse, a software emulation module that exposes the operations of the mouse need to be provided. virtual machine then interacts with the mouse via the software emulation module.
For simple devices that use common interfaces and low performance needs, such as a mouse or a keyboard, the software emulation model is effective. However, accessing more complex devices that have more comprehensive interfaces and higher performance needs, such as a graphics processing unit (GPU), via a software emulation model in a virtualized system yields two major problems. First, because a GPU is a highly complicated processing unit, providing a software emulation module that is comprehensive and that exposes the large range of functionality provided by the GPU is a very difficult task. Therefore, current software emulation modules that attempt to expose all of the functionalities of the GPU are lacking such that applications running in a virtual machine that consume the GPU do not run optimally, if at all. Second, because the GPU interface is more complex and performance critical, the inefficiencies of the abstraction often generate bottlenecks and inefficiencies.
One solution to the inefficiencies described above is to provide an independent GPU for each virtual machine executing on the host. Such a solution, however, is extremely expensive to implement and is not scalable. Therefore, such a solution cannot be efficiently implemented across a wide variety of consumers who need to access a GPU from within a virtual machine.
Accordingly, what is needed in the art is a system and method for efficiently sharing a single GPU across multiple users or virtual machines without having to scale up the hardware.